import QtQuick 2.12
import QtQuick.Window 2.12
import QtQuick.Controls 2.12
import Qt.labs.qmlmodels 1.0

/*QML 中信号槽的处理
  QML中的信号槽具有相对严格的命名规范，使用on加上信号命名为该信号的槽
  QML支持Javascript及其特性，可将Javascript代码嵌入到QML文件中
  用Javasctipt语法编写槽函数onSignal，点击按钮时连接槽函数，然后发送信号，传递参数一键三连
*/
Window {
    width: 640
    height: 480
    visible: true
    title: qsTr("Hello World")
    //连接自定义信号，命名以on+信号命名构成
    Connections {
        target: text_button
        onMySignal:{
            text_button.text += "\n mySignal被Connections触发，param=" + param

        }
    }
    function onSignal(param){
        text_button.text += "\n mySignal被onSignal触发，param=" + param
    }

    Button{
        id:text_button
        font.pointSize: 20
        signal mySignal(var param)  //添加自定义信号mySignal，形式参数param
        text: "点击"
        clip: false
        onClicked: {//这里实现点击信号
           text = "触发onClicked信号"
           clip = true  //点击按钮修改clip属性为true
           mySignal.connect(onSignal) //点击按钮连接槽函数，然后发送信号
           mySignal("一键三连")  //点击按钮发送mySignal信号，传递参数一键三连


        }
        //属性变化信号处理，命名以on+属性+changed构成
        onClipChanged: {
            text += "\n Clip属性修改"
        }
    }
}
